练习
(1)下面的转换哪些不是隐式转换?
a. int 转换为 short
b. short 转换为 int
c. bool 转换为 string
d. byte 转换为 float
答案:a和c的转换不能隐式进行。
(2) 以 short
类型作为基本类型编写一个 color
枚举,使其包含彩虹的颜色加上黑色和白色。这个枚举可使用 byte
类型作为基本类型吗?
答案:
enum color : short { Red, Orige, Yellow, Green, Blue, Indigo, Violet, Black, White } 可以,byte类型可以包含0~255之间的数字。 如果枚举项使用不同值,基于byte的枚举可以包含256项; 如果给枚举项使用重复的值,就可以包含更多的项。
(3)修改第 4 章的 Mandelbrot
集合生成程序示例,使用下面的结构表示复数:
struct imagNum
{
public double real, imag;
}
(4)下面的代码可以成功编译吗?为什么?
string[] blab = new string[5]
blab[5] = "5th string".
答案:
不,原因如下: • 遗漏了语句末尾的分号。 • 第二行尝试访问blab中不存在的第6个元素。 • 第二行尝试指定未包含在双引号中的字符串。
(5)编写一个控制台应用程序,它接收用户输入的一个字符串,将其中的字符以与输入相反的顺序输出。
答案:
static void Main(string[] args) { Console.WriteLine("Enter a string:"); string myString = Console.ReadLine(); string reversedString = ""; for(int index = myString.Length - 1; index >= 0; index--) { reversedString += myString[index]; } Console.WriteLine("Reversed: {0}", reversedString); }
(6)编写一个控制台应用程序,它接收一个字符串,用 yes
替换字符串中所有的 no
。
答案:
static void Main(string[] args) { Console.WriteLine("Enter a string:"); string myString = Console.ReadLine(); myString = myString.Replace("no", "yes"); Console.WriteLine("Replace \"no\" with \"yes\": {0}", myString); }
(7)编写一个控制台应用程序,给字符串中的每个单词加上双引号。
答案:
static void Main(string[] args) { Console.WriteLine("Enter a string:"); string myString = Console.ReadLine(); myString = "\" + myString.Replace(" ", "\" \"") + "\""; Console.WriteLine("Added double quotes arround words: {0}", myString); } 或者使用String.Split(); static void Main(string[] args) { Console.WriteLine("Enter a string:"); string myString = Console.ReadLine(); string[] myWords = myString.Split(' '); Console.WriteLine("Added double quotes arround words:"); } foreach(string myWord in myWords) { Console.Write("\"{0}\" ", myWord); }
🔚